跳到主要内容

[toc]

nginx https

openssl官网

1.检查环境并创建存放证书目录

1.1 openssl版本1.0.2以上

$ openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017

1.2 nginx必须支持--with-http_ssl_module模块

#先把输出放到一个文件中,然后从文件中过滤
nginx -V &> nginx.txt

1.3 创建存放nginx证书的目录

mkdir /etc/nginx/ssl_key && cd /etc/nginx/ssl_key

2.生成证书

2.1 生成私钥

使用openssl充当CA权威机构创建私钥(生产不可能使用此方式生成证书,不被互联网CA权威承认的黑户证书)

-idea参数就会提示输入密码,最少4位

openssl genrsa -out ca.key 2048

2.2 生成自签证书

  • 交互式
openssl req -x509 -new -nodes -sha256 -days 36500 -key ca.key -out ca.crt

参数说明

参数说明
req请求子命令
-x509证书格式
-new生成证书请求
-nodes私钥不加密
-days证书有效期
-key指定私钥文件
-out输入证书文件
  • 免交互式
openssl req -x509 -new -nodes -sha256 -days 36500 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=dev/OU=devops/CN=www.yzbpdcnm.com" \
-key ca.key \
-out ca.crt

免交互式-subj参数

简写完整单词含义
CCountry Name国家
STState or Province Name
LLocality Name城市
OOrganization Name组织名称
OUOrganization Unit Name组织单位名称
CNCommon Name域名

3.配置nginx以https方式访问

3.1 编辑nginx配置文件

cat > /etc/nginx/conf.d/https-test.conf <<'EOF'
server {
listen 80;
server_name www.test.com;
rewrite (.*) https://$server_name$request_uri redirect;
}

server {
#高版本的nginx已经弃用ssl on
listen 443 ssl;
server_name www.test.com;
ssl_certificate ssl_key/ca.crt;
ssl_certificate_key ssl_key/ca.key;

location / {
root /code;
index index.html;
}
}
EOF

3.2 创建网站根目录

mkdir /code && echo 'https test' >/code/index.html

3.3 本地绑定hosts浏览器访问

iShot2020-06-2209.22.29